home *** CD-ROM | disk | FTP | other *** search
- property pMySprite, pBCField, pFieldLimit
- global gCast, gSize, gFirstColor, gSecondColor, gWvBgColor, gWvBgShadow, gWvVcolor, gWvVShadow, gWvHcolor, gWvHShadow, gBC, gCurrentBC, gBCMin, gBCMax
-
- on beginSprite me
- pMySprite = sprite(me.spriteNum)
- end
-
- on mouseEnter me
- if gBC <> VOID then
- put "Click and drag to adjust the " & pBCField.word[1] & "." into field "status"
- end if
- end
-
- on mouseDown me
- sliderBC(me)
- end
-
- on mouseLeave me
- if gBC <> VOID then
- put EMPTY into field "status"
- end if
- end
-
- on resetBCSlider
- put 0 into field "Brightness status"
- put 0 into field "Contrast status"
- sprite(195).locH = sprite(279).left
- sprite(196).locH = sprite(279).left
- end
-
- on sliderBC newloch
- if gBC <> VOID then
- gCurrentBC = duplicate(gBC)
- repeat while the mouseDown
- newloch = the mouseH
- if newloch < (sprite(278).left - 1) then
- newloch = sprite(278).left - 1
- end if
- if newloch > sprite(279).right then
- newloch = sprite(279).right
- end if
- pMySprite.locH = newloch
- put integer((newloch - sprite(279).left) / 100.0 * pFieldLimit) into field pBCField
- updateStage()
- end repeat
- cursor(4)
- updateBC()
- cursor(0)
- gCurrentBC = VOID
- else
- beep()
- pass()
- end if
- end
-
- on updateBC
- brightValue = integer(the text of field "Brightness status")
- contrastValue = integer(the text of field "Contrast status")
- grayLevel = integer((gBCMin + gBCMax) / 2.0)
- repeat with Y = 0 to integer(gSize) - 1
- repeat with X = 0 to integer(gSize) - 1
- targetBCColor = gBC.getPixel(X, Y)
- if (targetBCColor.red <> 255) and (targetBCColor.red <> 0) then
- pRed = targetBCColor.red + brightValue
- else
- pRed = targetBCColor.red
- end if
- if (targetBCColor.green <> 255) and (targetBCColor.green <> 0) then
- pGreen = targetBCColor.green + brightValue
- else
- pGreen = targetBCColor.green
- end if
- if (targetBCColor.blue <> 255) and (targetBCColor.blue <> 0) then
- pBlue = targetBCColor.blue + brightValue
- else
- pBlue = targetBCColor.blue
- end if
- if contrastValue < 0 then
- redStep = (grayLevel - pRed) / 100.0
- pRed = integer(pRed - (contrastValue * redStep))
- greenStep = (grayLevel - pGreen) / 100.0
- pGreen = integer(pGreen - (contrastValue * greenStep))
- blueStep = (grayLevel - pBlue) / 100.0
- pBlue = integer(pBlue - (contrastValue * blueStep))
- else
- redStep = (pRed - grayLevel) / 100.0
- pRed = integer(pRed + (contrastValue * redStep))
- greenStep = (pGreen - grayLevel) / 100.0
- pGreen = integer(pGreen + (contrastValue * greenStep))
- blueStep = (pBlue - grayLevel) / 100.0
- pBlue = integer(pBlue + (contrastValue * blueStep))
- end if
- gCurrentBC.setPixel(X, Y, rgb(pRed, pGreen, pBlue))
- end repeat
- end repeat
- member("adj tone - " & gSize, gCast).image.copyPixels(gCurrentBC, member("adj tone - " & gSize, gCast).rect, gCurrentBC.rect)
- updateStage()
- end
-
- on getPropertyDescriptionList me
- list = [:]
- addProp(list, #pBCField, [#comment: "Field Member Name.", #format: #string, #default: "Hue status"])
- addProp(list, #pFieldLimit, [#comment: "Total field range.", #format: #integer, #default: 200])
- return list
- end
-